home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / ARexxTools / fpl70.lha / HISTORY < prev   
Encoding:
Text File  |  1994-04-11  |  12.6 KB  |  317 lines

  1. HISTORY of changes
  2.  
  3. Syntax of this file: (from version 7)
  4.     * Bug fix
  5.     + New feature
  6.     - Note/change
  7.     : Obsolete stuff
  8.  
  9. ------------------------------------------------------------------------------
  10.  
  11. 7.0    - 940411. Release!
  12.  
  13.     + Added the funclib/ directory to the package. Refer to the 'README'
  14.       file in there for funclib programming information!
  15.  
  16.     + Added funclib details in documentation. You should assign FPLLIBS:
  17.       to the directory where you store your future funclibs.
  18.  
  19.     + [Amiga] Added fplOpenLib() and fplCloseLib() functions. They are
  20.       the library equivalents to the FPL 'openlib' and 'closelib'
  21.       functions. The library functions have though more power... (see
  22.       docs)
  23.  
  24.     - [Amiga] 940407. Made the funclibs run from inside the library. Now
  25.       there's only some manual work left before release!
  26.  
  27.     - [Amiga] I changed the way FPL opens dos.library. Previously is was
  28.       opened and closed each time a file was to be loaded, now it is
  29.       opened and closed together with FPL itself.
  30.  
  31.     + Added switch()-details in documentation.
  32.  
  33.     - Changed 'demo.FPL' slightly. It now uses switch(), and doesn't use
  34.       'double'...
  35.  
  36.     + Added two error messages.
  37.  
  38.     : Renamed all error code enums (in FPL.h). The old are obsolete (but
  39.       can still be used) the new error codes are named FPLERR_*, so that
  40.       there will be no more confusion...
  41.  
  42.     + FPL nows allocates the words "struct", "float", "double", "union"
  43.       and "enum" to prevent users from being able to use them. They will
  44.       most likely be used in future versions of FPL when such things
  45.       become reality! (idea from Bernd Noll)
  46.  
  47.     - Rearranged more in the docs files. Now there are three .guide files.
  48.       The FPLuser.guide file has been stripped and should be perfect to
  49.       include in your software packages. The file FPL.README *should* be
  50.       included in all softwares that use FPL. (on request from several)
  51.  
  52.     - (940315) All my test cases have now proved to work, and the switch()
  53.       statement is *REALITY*! I know there are more than one of you out
  54.       there that have looked forward to this enhancement, and here it
  55.       is... I will of course have to increase the library version number
  56.       again.
  57.  
  58.     * Fixed FPLSEND_STEP which did not work when giving negative numbers.
  59.  
  60.     * When an error occured within some kind of statement which had a
  61.       string, that string could accidentaly get returned as a string
  62.       return which could result in a serious error! (Only if
  63.       FPLTAG_STRING_RETURN was used.)
  64.  
  65.     + Added the 'Makefile.SVR4'. This should create a shared library under
  66.       all the SVR4 UNIXes AT&T, Consensys, Dell, ESIX, ISC, Microport,
  67.       Micro Station Technology, Solaris v2, UHC, USL, Information
  68.       Foundation, UnixWare and Onsite(!).
  69.  
  70.     + (Amiga) I added the source code of the already compiled library
  71.       objects that I use to link with to create fpl.library. Now all
  72.       sources exist that is used to build all shared libraries on all
  73.       systems! (I know FPL has been almost impossible to compile using
  74.       Dice on Amiga) Non-SAS users will have to create the function
  75.       table pointed to by '_LibFuncTab' in libinit.c.
  76.       (Requested by a whole lot!)
  77.  
  78.     * Bernd Noll (b_noll@sun.rhrk.un) helped me to make the SunOS (4.1.x)
  79.       version to run without failing. *THANKS!*
  80.  
  81.     * Return optional return type did have some possible bugs.
  82.  
  83.     * (940307) Breaking out of a do-while loop has proved to never been
  84.       working... I removed that feature today. (Kjell Ericson reported)
  85.  
  86.     * Yes, I did found out that the date in the 6.0 release says 5.2.93
  87.       when it is supposed to be 5.2.94... We all do mistakes! :-)
  88.  
  89.     - Posted a "commercial text" in comp.sys.amiga.programmer which
  90.       resulted in a lot of positive and interested responses...!
  91.  
  92.     + Added the binary 'SFPL' file to the package. A whole lot have
  93.       troubles to compile it without SAS...
  94.  
  95.     + Enhanced the documentation. The "functions" and "keywords" chapters
  96.       are much easier to find and move around in. (On request)
  97.  
  98.     + Added the 'FPLDATA_NESTED_COMMENT' tag to fplInit(). This enables
  99.       nested comments in FPL programs. (On request)
  100.  
  101. 6.0    - Kenneth Johansson reported that strings containing "//" did not
  102.       work properly. I discovered that when FPL was passing code, it
  103.       did read comments within strings as if they really were comments
  104.       and could thereby miss the ending quote. Removed "feature"...
  105.  
  106.     - The file caching did not work as stated in the manual. The file
  107.       was cached as default whatever the fplInit() tag
  108.       'FPLTAG_CACHEALLFILES' told. Should work now.
  109.  
  110.     - Had to rearrange some code when generating the FPL_GENERAL_ERROR
  111.       call since OS/2 obviously had some trouble with doing as I was
  112.       doing! The previous code:
  113.  
  114.         int foo=5;
  115.         void **bar = &foo;
  116.         printf("%d", (int)bar[0]);
  117.  
  118.       did work under AmigaDOS and UNIX outputting '5'. Under OS/2, the
  119.       output become a very large number. The solution was to make it:
  120.  
  121.         int foo=5;
  122.         void *bar[1];
  123.         bar[0] = (void *)foo;
  124.         printf("%d", (int)bar[0]);
  125.  
  126.  
  127.     - I have removed all allowances to change FPL in this version.
  128.       Previously, FPL was released under GNU license, but so is no
  129.       longer the case! FPL is still Freeware, but may not be changed
  130.       by anyone, except for porting procedures.
  131.  
  132.     - FPLTAG_STRING_RETURN is added. This is a fplExecuteXXXX() tag
  133.       and it should be followed by a pointer to a char pointer.
  134.       This tells FPL that the highest program level (the "main" level)
  135.       is allowed to return a string which will be received in this
  136.       pointer. exit() will be able to return strings from all levels.
  137.       The returned string can be read and the FPL_STRLEN macro can be
  138.       used to get the length of the string. The string must be freed
  139.       with fplFreeString() (or will be done at 'fplFree()').
  140.       Programs that are using this tag cannot return an int.
  141.  
  142.     - fplAllocString() allocates memory for sending a string to FPL.
  143.       That is to prevent code like:
  144.         {
  145.           char *data= malloc(1000);
  146.           strcpy(data, otherdata);
  147.           fplSendTags(anchor, FPLSEND_STRING, data, TAG_DONE);
  148.           free(data);
  149.         }
  150.  
  151.       The enormous overhead when FPL also allocates and copies the
  152.       data is avoided by the new:
  153.         {
  154.           char *data = fplAllocString(anchor, 1000);
  155.           strcpy(data, otherdata);
  156.           fplSendTags(anchor, FPLSEND_STRING, data,
  157.                       FPLSEND_DONTCOPY_STRING, TRUE,
  158.                       TAG_DONE);
  159.         }
  160.  
  161.     - Currently I know about eight software projects around the globe
  162.       that are using fpl.library (four of them are BBS programs!).
  163.       Please, do notify me if you are using fpl.library and tell me
  164.       about your program. I would also encourage at least users
  165.       in Sweden to get the echo mail message area R20_FPL from us -
  166.       fido address 2:201/328 (The Holy Grail +46-(0)8-6121258). (It
  167.       will hopefully get on the backbone as soon as possible!)
  168.  
  169.     - Previous versions couldn't cache string-arrays, it ended up in
  170.       serious enforcer-hits!
  171.  
  172.     - I split up the .guide file into FPLuser.guide and FPLlib.guide.
  173.       All library functions are now put into fpl.doc which is in the
  174.       good old autodoc format. Docs are now found in the "docs" drawer
  175.       from the FPL root. The FPL root should be assigned FPL: to make
  176.       the cross-reference between the two .guide files work. PLEASE,
  177.       do report manual bugs!
  178.  
  179.     - As reported by Niclas Emdelius, FPLTAG_PROGNAME did not work
  180.       correctly.
  181.  
  182. 5.12    - (931217)
  183.       The library grew larger because of the compiler support that are
  184.       being inserted step by step. A future version is ment to be able
  185.       to compile and to run compiled code.
  186.  
  187.     - Corrected some strange behaviours when defining or prototyping
  188.       function names that already are used/defined. Now you can't
  189.       define function names with names that exist as internal or
  190.       external functions or keyword names. A function can only be
  191.       defined once with one name, a second try will result in error.
  192.       A Kjell Ericson report.
  193.  
  194.     - Strings containing \" (backslash quote) really messed things up.
  195.       Fixed! A Kjell Ericson report.
  196.  
  197.     - Made all tagfunctions have proper 'tagcall' pragmas. Use all
  198.       functions that accepts tags as their last parameter as:
  199.       <FunctionName>Tags() and you won't need any glue-code when
  200.       compiling with SAS/C and using tags.
  201.  
  202.     - Fixed the FPLTAG_INTERPRET tag a bit more since it didn't work...
  203.       Thanks again to Lasse Mickos.
  204.  
  205. 5.10    - FPLTAG_INTERPRET now works even if there is no real start of the
  206.           code. Thanks to Lasse Mickos for reporting this bug.
  207.  
  208.     - FPLTAG_STOREGLOBALS has lost its point and now FPLTAG_CACHEFILE
  209.       fully decides whether to store symbols.
  210.  
  211.     - The "struct fplArgument" has been extended with one more member.
  212.       "ret" will contain the expected return type. All functions that
  213.       return either 'int' or 'string' will find FPL_INTARG or
  214.       FPL_STRARG there, but functions returning FPL_OPTARG can find
  215.       either one depending on the expression in which the function is
  216.       being used. DO RETURN THE TYPE THAT IS EXPTECTED, OTHERWISE YOU
  217.       CONFUSE THE INTERPRETER!! If the "ret" is not what you expteced,
  218.       do not hesitate to return an FPL syntax error, and if the "ret"
  219.       field matches FPL_OPTARG, please return something to help the
  220.       interpreter find the type of the expression.
  221.  
  222.       Earlier compilings will of course still work 100%.
  223.  
  224.     - Optional return types will now be recognized slightly different.
  225.       If an expression expects a certain kind of return type, eg:
  226.       "int a = FooBar();" (the expression to the right of the assign
  227.       character is *expected* to return an int), that will be the
  228.       default interpretation of the returned optional return type. If
  229.       the returned type didn't match with the variable receiving it,
  230.       a zero, for integers, or a zero length string ("") will be the
  231.       result.
  232.  
  233.     - FPLSEND_GETRETURNCODE will only be able to call and get a proper
  234.       result until a new fplExecute#?() call is made. It is then set
  235.       to zero (0). A Kjell Ericson report.
  236.  
  237.     - The tags FPLTAG_CACHEFILE and FPLTAG_CACHEALLFILES have been
  238.       modified. Previously they accepted a boolean data, but now they
  239.       should be used using the more appropriate FPLCACHE defines.
  240.       They are as following:
  241.  
  242.       FPLCACHE_NONE        - Do not cache under any circumstances.
  243.       FPLCACHE_ALWAYS    - Cache if any symbols were global.
  244.       FPLCACHE_EXPORTS    - Cache if any symbols were exported.
  245.  
  246.       Earlier code will still work if it used 0 as FALSE and 1 as TRUE.
  247.  
  248.     - Expressions using a numerical variable and then a ">=" or "<="
  249.       operator did act is if it was written ">>=" or "<<="!!!
  250.       Reported by Niclas Emdelius.
  251.  
  252.     - Using '}' or '{' in declared functions, or other parts which
  253.       should be passed in any way, did cause an FPL error. Kjell
  254.       Ericson reported it.
  255.  
  256.     - Finding ASCII 10 inside a string did not work properly.
  257.       Preprocessing a "\n" did make a zero length string when
  258.       interpreted. Found by Kjell Ericson.
  259.  
  260.     - Functions that are defined to have one argument but are called
  261.       with two now results in a 'syntax error' message instead of the
  262.       earlier 'missing parenthesis'.
  263.  
  264.     - "\x" must be followed by at least one hexadecimal digit or
  265.       fail with a syntax error.
  266.  
  267.     - Expressions are now slightly faster interpreted.
  268.  
  269.     - Do notice that I'm now available for email at dast@sth.frontec.se!!!
  270.  
  271. v5.8    - strcmp("foo", "foobar"); did act as if this is a match!
  272.       Reported by Niclas Emdelius.
  273.  
  274.     - Executed nested files with global/exported symbols could end up
  275.       in a never-ending loop...
  276.  
  277. v5.7    - (930912)
  278.  
  279.     - FPL now supports external functions with optional return types.
  280.       FPL_OPTARG should now be a valid return code type of an external
  281.       function. If this is used, FPL will do its best to determine the
  282.       right return type. Help this out by always fplSend() a return
  283.       value when using the opitional return type since FPL builts its
  284.       guess heavliy upon that type.
  285.  
  286.     - The "==" bug just became different, but now I think I have
  287.       removed that feature for ever!
  288.  
  289. v5.6    - (930908)
  290.  
  291.     - I hopefully removed that nasty bug that sometimes made FPL crash
  292.       when the interface funtion doesn't fplSend() any return value.
  293.  
  294.     - Using a string in a (o)ptional parameter argument, did in certain
  295.       circumstances return a NULL pointer instead of a zero length
  296.       string, which was not described in the manual. Now it's corrected
  297.       and returns a zero length string.
  298.  
  299.     - An integer as last parameter in a function call, combined with a
  300.       "==" comparison like: "if(foobar(hello)==12)" was giving an
  301.       "illegal assign error" since FPL tried to interpret ")=" as some
  302.       kind of compound assign! Fixed.
  303.  
  304. v5.5    - (930827)
  305.  
  306.     - The itoc() function was added today. This could be done
  307.       very easy by external function(s), but I think that FPL needs
  308.       that to be more independent.
  309.  
  310.     - (930824) The '!=' operator works now.
  311.  
  312.     - FPL now supports the #line - instruction! See FPL.guide regarding
  313.       preprocessing, line control and the FPLSEND_GETVIRLINE and
  314.       FPLSEND_GETVIRFILE tags.
  315.  
  316.     - Back from a long vacation in South East Asia.
  317.